feat!: Kill MouseMovementDetector and rename PointerMove* to MouseMove* - #4011
Merged
Conversation
luanpotter
marked this pull request as ready for review
August 16, 2026 16:13
spydon
approved these changes
Aug 16, 2026
luanpotter
enabled auto-merge (squash)
August 16, 2026 19:51
6 tasks
luanpotter
added a commit
that referenced
this pull request
Aug 30, 2026
Kills `PanDetector` which was the last surviving heir of the game-level detectors. With it dead is all the infra: * the entire `src/gestures/`, including `events.dart` with `BaseInfo`, `PositionInfo`, `EventPosition`, `EventDelta` and all `*Info` classes (`TapDownInfo` and `TapUpInfo` were already dead but not cleansed); * `GestureDetectorBuilder.initializeGestures`, which existed only to wire the detectors onto recognizers, along with the `..initializeGestures(this)` cascade on `Game` (this will allow some further simplifications on gesture builder binding); * The `this is PanDetector` early-return in `FlameGame.containsEventHandlerAt` (it was redundant, as `componentsAtPoint` yields the game itself last, so a `FlameGame` with a positional callbacks mixin is still reported as a hit anywhere within its bounds); - All the old export blocks in the `events.dart` and `input.dart` barrels. Old `PanDetector` users should move to `DragCallbacks` (which as usual can be mixed into `FlameGame` directly). The examples and tutorials were migrated separately in #4028. Also updates and restructure the entire events docs, with this last mercy kill: * `gesture_input.md` is deleted (it had become a second index page duplicating `inputs.md`, plus cross-cutting sections that I re-homed); * the event coordinate system and the Flutter gesture-API links move to `inputs.md`, the mouse cursor section to `pointer_events.md`, and panning-and-zooming folds into `scale_events.md`; * Fixed two broken links. `collision_detection.md` pointed at `inputs/gesture_input.md#gesturehitboxes`, but that section had moved to `inputs.md` in #4011 without its inbound links being updated; * The drag + scale combination was documented three times, with `drag_events.md` and `scale_events.md` carrying byte-identical code blocks. `scale_events.md` is now canonical and `drag_events.md` cross-links to it; * Dropped the stale "the old (legacy) approach is described in gesture_input.md" notes from `tap_events.md` and `pointer_events.md`. There is no longer an old approach; * Dropped the "For other input documents, see also:" blocks from `keyboard_input.md` and `other_inputs.md`. They date from #2063, when `inputs/` held exactly three documents that each linked the other two; the gesture third has since become five pages, none of which ever got the block. No other doc grouping in the tree links back to its index or lists siblings (navigation is the toctree); * Documented that `localPosition` / `localDelta` are only valid inside the callback, with `clone()` as the escape hatch if you need the value later. ### The Breaking `PanDetector`, `DragDownInfo`, `DragStartInfo`, `DragUpdateInfo`, `DragEndInfo`, `TapDownInfo`, `TapUpInfo`, `PositionInfo`, `GestureDetectorBuilder.initializeGestures` killed; migration guide section is included. --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Kill
MouseMovementDetectorlegacy game mixin and associated paraphernalia (such asPointerHoverInfo), in favour of the new system.Also renames
PointerMove*toMouseMove*on the new system, because:PointerMoveEventcollided with Flutter's class of the same name, which forced a hide on any file importing both package:flame/events.dart and package:flutter/material.dartPointerHoverEventand is delivered from aMouseRegion.MouseMoveDispatcherKeywas already named this way, so the codebase was half-renamed already.Migration is trivial; use new system instead of old, and apply the renames if needed:
PointerMoveEvent->MouseMoveEventPointerMoveCallbacks->MouseMoveCallbacksPointerMoveDispatcher->MouseMoveDispatcheronPointerMove/onPointerMoveStop->onMouseMove/onMouseMoveStopUnlike the legacy detector, which received every mouse movement anywhere on the game surface,
MouseMoveCallbacksis routed by position like the other component callbacks (and it can also be mixed at the game level as expected).The final intermediate shape of
gesture_input.mdis now reframed around the Callbacks mixins as the true system, withPanDetectordemoted to the last remaining legacy detector. I also movedGestureHitboxesto inputs.md, where it belongs as a cross-system concern.Checklist
docsand added dartdoc comments with///.examplesordocs.Breaking Change?